package com.vhall.component.framework.common.utils;

import java.nio.charset.StandardCharsets;

/**
 * @author xiaoliang.wang@vhall.com
 */

public class StringUtils {

    /**
     * 按 delimiter 拼接字符串
     *
     * @param delimiter
     * @param tokens
     * @return
     */
    public static String join(CharSequence delimiter, Iterable tokens) {
        StringBuilder sb = new StringBuilder();
        boolean firstTime = true;
        for (Object token : tokens) {
            if (firstTime) {
                firstTime = false;
            } else {
                sb.append(delimiter);
            }
            sb.append(token);
        }
        return sb.toString();
    }

    /**
     * 判空
     *
     * @param cs
     * @return
     */
    public static boolean isEmpty(final CharSequence cs) {
        return cs == null || cs.length() == 0;
    }

    /**
     * 非空
     *
     * @param cs
     * @return
     */
    public static boolean isNotEmpty(final CharSequence cs) {
        return !isEmpty(cs);
    }

    /**
     * 获取字符串的UTF-8编码字节数组
     *
     * @param str 字符串
     * @return 字节数组
     */
    public static byte[] getUTF8Bytes(String str) {
        if (isNotEmpty(str)) {
            return str.getBytes(StandardCharsets.UTF_8);
        }
        return null;
    }

    /**
     * 获取字节数组的UTF-8编码字符串
     *
     * @param b 字节数组
     * @return 字符串
     */
    public static String getUTF8String(byte[] b) {
        if (b != null) {
            return new String(b, StandardCharsets.UTF_8);
        }
        return null;
    }

    /**
     * 生成num位的数字和字母组合
     *
     * @return
     */
    public static String getRandom(int num) {
        StringBuilder str = new StringBuilder();
        // 记录生成的随机数个数
        int count = 0;
        String[] strs = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a",
                "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m", "Q", "W", "E", "R", "T", "Y", "U", "I", "O",
                "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M"};

        while (count < num) {
            int a = (int) (Math.random() * 62);
            str.append(strs[a]);
            count++;
        }
        return str.toString();
    }

}
